package com.wenjie.terminal.util;

import com.alibaba.fastjson2.JSONObject;

import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;

/**
 * Map转换工具类
 */
public class MapUtil {

    /**
     * 将 Map<String, List<String>> 转换为指定类型的对象
     *
     * @param parameters Map对象，键是字段名，值是字段值的列表
     * @param clazz      目标对象的Class类型
     * @param <T>        目标对象类型
     * @return 转换后的对象
     * @throws IllegalArgumentException 如果转换失败
     */
    public static <T> T convert(Map<String, List<String>> parameters, Class<T> clazz) throws IllegalArgumentException {
        try {
            // 将 List<String> 转为单一值 (取第一个元素)
            Map<String, String> singleValueMap = parameters.entrySet().stream()
                    .filter(entry -> entry.getValue() != null && !entry.getValue().isEmpty())
                    .collect(Collectors.toMap(
                            Map.Entry::getKey,
                            entry -> entry.getValue().get(0) // 取第一个值
                    ));

            // 使用 FastJson2 的 JSONObject 进行转换
            return JSONObject.parseObject(JSONObject.toJSONString(singleValueMap), clazz);
        } catch (Exception e) {
            return null;
        }
    }
}
